package edu.sjb.characters;

import javax.swing.ImageIcon;

@SuppressWarnings("serial")
public class Mario extends Character implements Runnable {
    public static final int NO_MOVE = 0;
    public static final int RIGTH = 1;
    public static final int LEFT = 2;
    public static final int JUMP = 3;
    protected ImageIcon actual;
    protected ImageIcon quieto;
    protected ImageIcon derecha;
    protected ImageIcon izquierda;
    protected ImageIcon salto;
    protected ImageIcon salto_l;
    protected ImageIcon muerto;
    protected ImageIcon prevStatus;
    protected boolean isAlive;
    protected int state;

    public Mario() {
        quieto =
                new ImageIcon("./images/character/mario/mariosmall_still_r.gif");
        derecha =
                new ImageIcon("./images/character/mario/mariosmall_walk_r.gif");
        izquierda = new ImageIcon(
                "./images/character/mario/mariosmall_walk_l.gif");
        salto = new ImageIcon("./images/character/mario/mariosmall_jump_r.gif");
        salto_l = new ImageIcon("./images/character/mario/mariosmall_jump_r.gif");
        muerto = new ImageIcon("./images/character/mario/mariosmall_dead_0.gif");

        prevStatus = actual = quieto;

        setPositionX(0);
        setPositionY(0);
        setIcon(actual);
        setOpaque(false);
        setVisible(true);
        setDoubleBuffered(true);

        isAlive = true;
        state = NO_MOVE;
    }

    @Override
    public void move(double x, double y) {
        super.setPositionX(x);
        super.setPositionY(y);
    }

    @Override
    public void run() {
        while (true) {
            try {

                this.setIcon(this.actual);
                Thread.sleep(25);
                
            }
            catch (Exception e) {
                e.printStackTrace();
                System.out.println(e.getMessage());
            }
        }
    }

    public void goDerecha() {
        prevStatus = actual;
        actual = derecha;
        setIconMario(actual);
    }

    public void goQuieto() {
        prevStatus = actual = quieto;
        setIconMario(actual);
    }

    public void goSaltoR() {
        prevStatus = actual;
        actual = salto;
        setIconMario(actual);
    }
    
    public void goSaltoL() {
        prevStatus = actual;
        actual = salto_l;
        setIconMario(actual);
    }

    public void goIzquierda() {
        prevStatus = actual;
        actual = izquierda;
        setIconMario(actual);
    }

    public void goMuerto() {
        prevStatus = actual = muerto;
        setIconMario(actual);
    }

    public void prevStatus() {
        actual = prevStatus;
        setIconMario(actual);
    }

    public boolean isAlive() {
        return isAlive;
    }

    public void setAlive(boolean a) {
        isAlive = a;
    }

    public int getState() {
        return state;
    }

    public void setState(int s) {
        state = s;
    }
    
    public void setIconMario(ImageIcon i)
    {
    	setIcon(i);
    }
    
    public ImageIcon getActual()
    {
    	return actual;
    }
}
